// API响应处理工具函数

/**
 * 安全地获取API响应数据
 * @param {Object} response - API响应对象
 * @param {string} defaultValue - 默认值
 * @returns {any} 响应数据或默认值
 */
export function getResponseData(response, defaultValue = null) {
  if (!response) return defaultValue;
  
  // 如果响应有data字段，返回data
  if (response.data !== undefined) {
    return response.data;
  }
  
  // 如果响应本身不是对象，直接返回
  if (typeof response !== 'object') {
    return response;
  }
  
  // 如果响应是对象但没有data字段，返回响应本身
  return response;
}

/**
 * 检查API响应是否成功
 * @param {Object} response - API响应对象
 * @returns {boolean} 是否成功
 */
export function isResponseSuccess(response) {
  if (!response) return false;
  
  // 检查status字段 - 支持多种成功状态
  if (response.status === 'success' || response.status === 200 || response.status === '200') {
    return true;
  }
  
  // 如果没有status字段，但有数据，认为是成功的
  if (response.status === undefined && response !== null) {
    return true;
  }
  
  return false;
}

/**
 * 获取API响应错误信息
 * @param {Object} response - API响应对象
 * @param {string} defaultMessage - 默认错误信息
 * @returns {string} 错误信息
 */
export function getResponseError(response, defaultMessage = '操作失败') {
  if (!response) return defaultMessage;
  
  return response.message || response.error || defaultMessage;
}

/**
 * 安全地处理API调用
 * @param {Function} apiCall - API调用函数
 * @param {string} errorMessage - 错误信息
 * @returns {Promise<Object>} 处理结果
 */
export async function safeApiCall(apiCall, errorMessage = '操作失败') {
  try {
    const response = await apiCall();
    return {
      success: isResponseSuccess(response),
      data: getResponseData(response),
      message: response?.message || '',
      error: null
    };
  } catch (error) {
    console.error('API调用失败:', error);
    return {
      success: false,
      data: null,
      message: getResponseError(error, errorMessage),
      error: error
    };
  }
} 